During the life cycle of a computer system, multiple software environments must be maintained on the computer system or on a test system in order to support the various activities needed to maintain and enhance the computer system. A development environment is used to code and unit test both software fixes and software enhancements. In this development environment there is very little control placed upon the permissible software changes; therefore, the system engineer (SE) is free to make software changes at will. After the software changes have been made and unit tested, the programs, maps, dsects, etc. are moved into the system test (model office) or staging environment that is maintained on the computer system. This staging environment is normally used as both a formalized system or release testing environment as well as a staging environment for the production system software. This staging environment is normally strictly controlled with few, if any, direct changes allowed. The fix environment is used to support changes to the production system software which are a result of abends or fixes to other computer system malfunctions. The required software changes are usually made and unit tested in the development environment and then moved to the fix environment. Finally, the production system software is used to contain the customer's functioning computer system (except for fixes). This is the most stable and highly controlled environment where changes are implemented only through the fix environment or planned movement of software from the staging environment.
These four environments (development, staging, fix, production) are normally viewed as a multi-level hierarchy where each level of the hierarchy contains only the software changes applicable to that environment. Under this configuration, a user of an environment would see only those software entities which are in the current environment plus those which are in his hierarchical path. Furthermore, each level down the hierarchical path acts as a concatenation, where duplicate software entities in the hierarchical path behave as if they were replacements. Thus a user of the system test environment would see system test software concatenated to fix software which is in turn concatenated to production software.
The current software management methods in this field provide a single software environment which is used to support the entire life cycle and corresponding software versions of a computer system. Under this configuration there is a single logical data base per computer system and thus one mainframe target environment for each computer system. With these restrictions and the requirement to support multiple mainframe environments associated with development, system test and production of software, it is extremely difficult to control the activities needed to co-ordinate the movement of software changes and software enhancements to and through the multiple environments. This co-ordination requires both a restriction on when software changes can be made in the overall environment and also the selective mainframe movement of programs, maps and other software entities from a staging environment to the desired production software environment. Additionally, there is a possibility that work in-progress may prevent the timely fix of a malfunction since that work may have to be undone or implemented early in order to correct the problem.